package xginxim

import (
	"encoding/json"

	"gitee.com/xiaoyutab/xgotool/optional/xim"
	"gitee.com/xiaoyutab/xgotool/xgin"
)

// 注册设备列表
//
//	POST	reg.dervice
func regDervice(uid uint, c []byte) *xgin.Response {
	type param_struct struct {
		Mac      map[string]string `json:"mac" form:"mac"`           // MAC地址[禁止为空]
		Arch     string            `json:"arch" form:"arch"`         // CPU架构[注册时使用]
		Goos     string            `json:"goos" form:"goos"`         // 系统名称[注册时使用]
		Hostname string            `json:"hostname" form:"hostname"` // 主机名称[注册时使用]
	}
	temp := param_struct{}
	if err := json.Unmarshal(c, &temp); err != nil {
		return xgin.Resp().EP(err)
	}
	if len(temp.Mac) == 0 {
		return xgin.Resp().ErrorString("MAC地址不允许为空")
	}
	// 获取设备类型
	der, err := xim.GetDervice(uid, temp.Mac)
	if err != nil {
		if err.Error() != "未检索到相应设备，先注册该设备再行查询" {
			return xgin.Resp().EP(err)
		}
		// 注册设备
		if der == nil {
			der = &xim.ImUserDervice{
				Arch:     temp.Arch,
				UserId:   uid,
				Goos:     temp.Goos,
				Hostname: temp.Hostname,
			}
		}
		err := xim.CreateDervice(der, temp.Mac)
		if err != nil {
			return xgin.Resp().Error(err)
		}
	}
	// 返回注册结果信息
	return xgin.Resp().SuccessAny(der)
}
